home *** CD-ROM | disk | FTP | other *** search
- &l0l6D&l1x0o0E*r0F*v0n1O*p4300X%1BDT~,1TR0TD1SP1FT10,50CF3,1LB.~;%1A*c100G*v2T&a0P(10U(sp10h12vsb3T&l2a0E*p0Y*ct9840Y&l0o0E&a0P*p788Y*p919X(10U(s1p14.4vsb4101TBtrieve*p1115XClass*p1266XTutorial*p1463X(10U(sp10h12vsb3T(10U(s1p14.4vsb4101T*p919X&dD*p1463X&d@*p998Y*p216X(10U(sp10h12vsb3TDisclaimer:*p576X*p1048Y*p216X*p246X*p276X*p306XThis*p468Xtutorial*p750Xwas*p882Xwritten*p1134Xto*p1236Xpresent*p1488Xa*p1560Xmethod*p1782Xof*p1884Xusing*p2076Xthe*p1098Y*p216XBtrieve*p456Xclass*p636Xlibrary.*p936XThe*p1056Xexamples*p1326Xare,*p1476Xunfortunately,*p1926Xtrivial.*p1148Y*p216XMy*p316Xapologies*p626Xto*p726Xthose*p916Xwho,*p1076Xlike*p1236Xmyself,*p1486Xhate*p1646Xtrivial*p1896Xexamples.*p1198Y*p216XThey*p368Xare,*p521Xhowever,*p794Xmuch*p946Xeasier*p1159Xto*p1252Xwork*p1405Xwith.*p1620XPerhaps*p1863Xsomeday*p2106Xwe*p1248Y*p216Xwill*p385Xwrite*p584X(10U(sp10h12vs3b3T"Tutorial,*p933XThe*p1071XSQL"(10U(sp10h12vsb3T*p1240Xthat*p1409Xwill*p1578Xcontain*p1836Xnon-trivial*p1298Y*p216Xexamples.*p2979Y*p276X(10U(sp10h12vs3b3TCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p529Y*p366XThe*p495Xobject*p714Xof*p813Xthis*p972Xtutorial*p1251Xis*p1350Xto*p1449Xstep*p1608Xthrough*p1857Xa*p1926Xsomewhat*p579Y*p216Xrealistic*p542Xproblem.*p896XIn*p1012Xthis*p1189Xtutorial*p1486Xthe*p1632Xprocess*p1899Xis*p2016Xshown*p629Y*p216Xsequentially.*p709XHowever,*p1000Xobject*p1232Xoriented*p1523Xanalysis,*p1845Xdesign*p2076Xand*p679Y*p216Ximplementation*p692Xlends*p899Xitself*p1135Xto*p1251Xa*p1337Xmore*p1514Xiterative*p1840Xprocess*p2106Xon*p729Y*p216Xcomplicated*p591Xproblems.*p951XFortunately,*p1356Xthis*p1521Xis*p1626Xnot*p1761Xa*p1836Xcomplicated*p779Y*p216Xproblem.*p879Y*p216X(10U(sp10h12vs3b3TI.*p306XThe*p426XProblem(10U(sp10h12vsb3T*p979Y*p366XA*p429Xclient*p641Xhas*p764Xa*p826Xneed*p979Xfor*p1101Xa*p1164Xsimple*p1376Xorder*p1559Xtracking*p1831Xsystem.*p2106XHe*p1029Y*p216Xknows*p393Xthat*p541Xa*p599Xperson*p806Xwill*p954Xcall*p1102Xin*p1189Xwith*p1337Xan*p1425Xorder*p1603Xfor*p1720Xitems*p1898Xthat*p2046Xthey*p1079Y*p216Xwish*p385Xto*p494Xhave*p663Xdelivered*p982Xto*p1091Xthem.*p1339XThe*p1479Xclient*p1708Xwants*p1907Xto*p2016Xtrack*p1129Y*p216Xinformation*p573Xon*p660Xthe*p778Xperson,*p1015Xthe*p1132Xorder,*p1340Xand*p1457Xwhether*p1694Xor*p1781Xnot*p1899Xthe*p2016Xorder*p1179Y*p216Xhas*p336Xbeen*p486Xpaid*p636Xfor.*p816XThere*p996Xis*p1086Xalso*p1236Xa*p1296Xneed*p1446Xfor*p1566Xa*p1626Xlist*p1776Xof*p1866Xitems*p2046Xfrom*p1229Y*p216Xwhich*p396Xthe*p516Xcustomer*p786Xwill*p936Xorder.*p1329Y*p216X(10U(sp10h12vs3b3TII.*p336XThe*p456XAnalysis(10U(sp10h12vsb3T*p1429Y*p366XFrom*p513Xthe*p629Xabove*p806Xproblem*p1043Xa*p1099Xnumber*p1306Xof*p1393Xentities*p1659Xand*p1776Xrelationships*p1479Y*p216Xcan*p336Xbe*p426Xdetermined.*p816XThe*p936Xapparent*p1206Xentities*p1476Xare:*p1626XPerson,*p1866XOrder,*p2076Xand*p1529Y*p216XItems.*p456XThe*p576Xrelationships*p996Xbetween*p1236Xthese*p1416Xentities*p1686Xare*p1806Xas*p1896Xfollows:*p1629Y*p366XA*p426XPerson*p636Xmay*p756Xplace*p936Xone*p1056Xor*p1146Xmore*p1296XOrders.*p1679Y*p366XAn*p456XOrder*p636Xis*p726Xplaced*p936Xby*p1026XOne*p1146Xand*p1266XOnly*p1416XOne*p1536XPerson.*p1779Y*p366XAn*p456XOrder*p636Xmay*p756Xcontain*p996Xone*p1116Xor*p1206Xmore*p1356XItems.*p1829Y*p366XAn*p456XItem*p606Xmay*p726Xbe*p816Xon*p906XOne*p1026Xor*p1116XMore*p1266XOrders.*p1879Y*p216X*p246X*p276X*p306X*p336X*p366X*p1929Y*p216XThe*p330Xlast*p474Xrelationship*p858Xpresents*p1122Xa*p1176Xsmall*p1350Xproblem.*p1638XIt*p1722Xrepresents*p2046Xwhat*p1979Y*p216Xis*p306Xcalled*p516Xa*p576X(10U(sp10h12v1sb3Tmany-to-many(10U(sp10h12vsb3T*p966Xrelationship.*p1416XThe*p1536Xfirst*p1716Xrelationship*p2106Xis*p2029Y*p216Xa*p268X(10U(sp10h12v1sb3Tone-to-many(10U(sp10h12vsb3T*p621Xrelationship.*p1056XThe*p1168Xfollowing*p1461Xrelationships*p1873Xare*p1986Xvalid:*p2079Y*p216X(10U(sp10h12v1sb3TOne-to-Many(10U(sp10h12vsb3T,*p651X(10U(sp10h12v1sb3TMany-to-One(10U(sp10h12vsb3T*p1056Xand*p1221X(10U(sp10h12v1sb3TOne-to-One(10U(sp10h12vsb3T.*p1701XA*p1806Xmany-to-many*p2129Y*p216Xrelationship*p626Xis*p736Xnot*p876Xa*p956Xvalid*p1156Xrelationship*p1566Xas*p1676Xit*p1786Xis*p1896Xvirtually*p2179Y*p216Ximpossible*p544Xto*p631Ximplement*p928Xin*p1016Xa*p1073Xrelational*p1400Xmodel.*p1635XThe*p1752Xway*p1869Xto*p1956Xcorrect*p2229Y*p216Xa*p281Xmany-to-many*p676Xis*p771Xto*p866Xadd*p991Xthe*p1116Xmissing*p1361Xentity.*p1641XWe*p1736Xwill*p1891Xcall*p2046Xthis*p2279Y*p216Xentity*p443Xthe*p580XOrderItem.*p973XThis*p1140Xchanges*p1396Xthe*p1533Xrelationships*p1970Xto*p2076Xthe*p2329Y*p216Xfollowing:*p2429Y*p366XA*p426XPerson*p636Xmay*p756Xplace*p936Xone*p1056Xor*p1146Xmore*p1296XOrders.*p2479Y*p366XAn*p456XOrder*p636Xis*p726Xplaced*p936XOne*p1056Xand*p1176XOnly*p1326XOne*p1446XPerson.*p2579Y*p366XA*p426XOrder*p606Xmay*p726Xcontain*p966Xone*p1086Xor*p1176Xmore*p1326XOrderItems.*p2629Y*p366XAn*p456XOrderItem*p756Xmust*p906Xbe*p996Xon*p1086XOne*p1206Xand*p1326XOnly*p1476XOne*p1596XOrders.*p2729Y*p366XAn*p456XOrderItem*p756Xmust*p906Xcorrespond*p1236Xto*p1326XOne*p1446Xand*p1566XOnly*p1716XOne*p1836XItem.*p2779Y*p366XAn*p456XItem*p606Xmay*p726Xcorrespond*p1056Xto*p1146Xone*p1266Xor*p1356Xmore*p1506XOrderItems.*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X1*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p479Y*p216XAfter*p423Xdetermining*p810Xthe*p956Xrelationships*p1403Xwe*p1520Xcan*p1666Xgive*p1843Xa*p1930Xlist*p2106Xof*p529Y*p216Xattributes*p546Xfor*p666Xeach*p816Xentity.*p624Y*p366X(10U(sp12h10vsb3TPerson:*p666Y*p516XID*p966X//*p1041Xunique*p1216Xfor*p1316Xeach*p1441Xperson.*p1666XUsed*p1791Xfor*p1891X*p707Y*p816X//*p891Xmapping*p1091Xto*p1166Xother*p1316Xentities*p749Y*p516XName*p791Y*p366X*p391X*p416X*p441X*p466X*p491XShippingAddress*p916Y*p366XOrder:*p958YNumber*p966X//*p1041Xunique*p1216Xfor*p1316Xeach*p1441XOrder*p1000Y*p516XPersonID*p766X*p816X//*p891Xmap*p991Xto*p1066Xperson*p1241Xwho*p1341Xcalled*p1516Xin*p1591Xorder*p1041Y*p516XDateOfOrder*p1083Y*p516XPaidFlag*p966X//*p1041XTrue*p1166Xif*p1241XPO*p1316Xwas*p1416Xpaid*p1541Xfor*p1167Y*p366XOrderItem:*p1208Y*p516XOrderNumber*p816X//*p891Xmap*p991Xto*p1066Xpurchase*p1291Xorder*p1250Y*p516XItemNumber*p816X//*p891Xmap*p991Xto*p1066Xitem*p1292Y*p516XQuantity*p966X//*p1041Xnumber*p1216Xof*p1291Xitems*p1441Xordered*p1334Y*p516XPurchaseCost*p966X//*p1041Xcost*p1166Xof*p1241Xitem*p1366Xat*p1441Xtime*p1566Xof*p1641Xpurcahse*p1417Y*p366XItem:*p1459Y*p516XItemNumber*p816X//*p891Xunique*p1066Xfor*p1166Xeach*p1291Xitem*p1501Y*p516XDescription*p1542Y*p516XUnitCost(10U(sp10h12vsb3T*p1681Y*p216X(10U(sp10h12vs3b3TIII.*p366XThe*p486XDesign(10U(sp10h12vsb3T*p1781Y*p366XFrom*p527Xthe*p658Xabove*p849Xbrief*p1040Xanalysis*p1321Xwe*p1422Xcan*p1553Xbegin*p1744Xto*p1845Xset*p1976Xup*p2076Xour*p1831Y*p216Xdatasets(10U(s1p7.2vsb4101T*p1813Y1(10U(sp10h12vsb3T*p1831Y.*p570XIn*p665Xthe*p789Xheader*p1004Xfile*p1158XTUTORIAL.H*p1493Xthe*p1617Xstructures*p1952Xfor*p2076Xthe*p1881Y*p216Xdatasets*p483Xwere*p630Xdefined*p867Xas*p954Xfollows*p1191X(note*p1368Xthat*p1515Xthe*p1632Xkey*p1749Xinformation*p2106Xis*p1931Y*p216Xdocumented*p546Xin*p636Xthe*p756Xstructures*p1086Xfor*p1206Xclarity)*p2026Y*p216X(10U(sp12h10vsb3T(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.HPP)*p2109Y*p366Xstruct*p541XPerson*p2151Y*p366X*p391X*p416X*p441X{*p2193Y*p366X*p391X*p416X*p441X//*p516Xkey*p616X0*p2235Y*p366X*p391X*p416X*p441Xunsigned*p666Xlong*p791Xid;*p966X//unique*p1249Xfor*p1408Xeach*p1591Xperson*p1824X-*p1933Xmaps*p2116Xto*p2276Y*p966X//other*p1166Xobjects*p2318Y*p366X*p391X*p416X*p441X//*p516Xkey*p616X1*p2360Y*p366X*p391X*p416X*p441Xchar*p566Xname[26];*p966X//*p1041Xlastname,*p1291Xfirst*p2443Y*p366X*p391X*p416X*p441XAddress*p641XshipAddress;*p966X//*p1041Xdefined*p1241Xelsewhere*p2485Y*p366X*p391X*p416X*p441X};*p2645Y*p216X(10U(sp10h12vsb3T&dD*p816X&d@*p2729Y*p216X*p246X*p276X*p306X*p336X*p366X(10U(s1p7.2vsb4101T*p2711Y1(10U(sp10h12vsb3T*p2729YA*p437Xdataset*p674Xis*p761Xa*p818Xset*p934Xof*p1021Xdata*p1168Xthat*p1315Xhas,*p1462Xin*p1548XBtrieve,*p1815Xa*p1872Xone*p1989Xto*p2076Xone*p2779Y*p216Xcorrespondence*p666Xwith*p816Xa*p876Xfile.*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X2*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p366X(10U(sp12h10vsb3TStruct*p541XItem*p516Y*p366X*p391X*p416X*p441X{*p557Y*p366X*p391X*p416X*p441X//*p516Xkey*p616X0*p599Y*p366X*p391X*p416X*p441Xunsigned*p666XitemNumber;*p966X//*p1041Xunique*p1216Xfor*p1316Xeach*p1441Xitem*p641Y*p366X*p391X*p416X*p441Xchar*p566Xdescription[36];*p683Y*p366X*p391X*p416X*p441Xdouble*p616XunitCost;*p724Y*p366X*p391X*p416X*p441X};*p808Y*p366Xstruct*p541XOrderItem*p850Y*p366X*p391X*p416X*p441X{*p891Y*p366X*p391X*p416X*p441X//*p516Xkey*p616X0*p933Y*p366X*p391X*p416X*p441Xchar*p566XorderNumber[10];//*p1041Xmaps*p1166Xto*p1241Xpurchase*p1466Xorder*p1017Y*p366X*p391X*p416X*p441Xunsigned*p666XitemNumber;*p966X//*p1041Xmaps*p1166Xto*p1241Xitem*p1058Y*p366X*p391X*p416X*p441Xdouble*p616Xquantity;*p966X//*p1041Xamount*p1216Xordered*p1100Y*p366X*p391X*p416X*p441Xdouble*p616XpurchaseCost;*p966X//*p1041Xcost*p1166Xat*p1241Xtime*p1366Xof*p1441Xorder*p1142Y*p366X*p391X*p416X*p441X};*p1225Y*p366Xstruct*p541XOrder*p1267Y*p366X*p391X*p416X*p441X{*p1309Y*p366X*p391X*p416X*p441X//*p516Xkey*p616X0*p1351Y*p366X*p391X*p416X*p441Xchar*p566Xnumber[10];*p1116X//*p1191Xunique*p1366Xfor*p1466Xeach*p1591XOrder*p1434Y*p366X*p391X*p416X*p441Xunsigned*p666Xlong*p791XpersonID;*p1116X//*p1191Xperson*p1366Xwho*p1466Xcalled*p1641Xin*p1716X*p1476Y*p666X//*p741Xorder*p1559Y*p366X*p391X*p416X*p441X//*p516Xkey*p616X1*p666X-*p716Xmanual*p891Xkey*p991Xwith*p1116XpaidFlag*p1601Y*p366X*p391X*p416X*p441Xchar*p566XdateOrdered[8];*p966X//*p1041XYYMMDD*p1216X-*p1266Xthere*p1416Xare*p1516Xbetter*p1691Xbut*p1791X*p1643Y*p516X//*p591Xthis*p716Xis*p791Xeasier*p966X(sorry)*p1685Y*p366X*p391X*p416X*p441XBoolean*p641XpaidFlag;*p966X//*p1041XTrue*p1166Xif*p1241Xpaid*p1726Y*p366X*p391X*p416X*p441X};*p1857Y*p366X(10U(sp10h12vsb3TUnfortunately,*p812Xas*p897Xbeautiful*p1193Xas*p1279Xthese*p1455Xstructures*p1780Xare*p1896Xsomething*p1907Y*p216Xis*p300Xmissing.*p590XNotice*p794Xthat*p939Xthere*p1113Xare*p1228Xno*p1312Xmethods*p1547Xassociated*p1871Xwith*p2016Xthese*p1957Y*p216Xstructures.*p623XThere*p811Xis*p909Xno*p1007Xway*p1135Xto*p1234Xadd,*p1392Xchange,*p1640Xlist*p1798Xor*p1896Xotherwise*p2007Y*p216Xmanipulate*p543Xany*p660Xof*p747Xthese*p924Xentities.*p1248XThe*p1365Xquestion*p1632Xis:*p1749XShould*p1956Xmethods*p2057Y*p216Xbe*p306Xadded*p486Xto*p576Xthe*p696Xexisting*p966Xentities,*p1266Xor*p1356Xare*p1476Xthere*p1656Xentities*p1926Xmissing?*p2107Y*p366XIn*p474Xorder*p672Xto*p780Xanswer*p1008Xthe*p1146Xquestion*p1434Xthe*p1572Xmethods*p1830Xneed*p1998Xto*p2106Xbe*p2157Y*p216Xanalyzed.*p570XThis*p732Xrequires*p1014Xan*p1116Xanswer*p1338Xto*p1440Xa*p1512Xsecond*p1734Xquestion:*p2046XWhat*p2207Y*p216Xmethods*p461Xare*p587Xneeded*p802Xfor*p927Xthe*p1053Xclient*p1268Xto*p1364Xsolve*p1549Xthe*p1675Xproblem*p1920Xof*p2016Xorder*p2257Y*p216Xtracking?*p546XAt*p636Xfirst*p816Xonly*p966Xthese*p1146Xtwo*p1266Xare*p1386Xobvious:*p2357Y*p366X1.*p456XAdd*p576XOrders*p2407Y*p366X2.*p456XPrint*p636Xan*p726XInvoice.*p2507Y*p216XHowever,*p486Xto*p576Xaccomplish*p906Xthose*p1086Xtwo*p1206Xmany*p1356Xothers*p1566Xare*p1686Xneeded:*p2607Y*p216X*p246X*p366X3.*p456XAdd*p576Xcustomers*p2657Y*p366X4.*p456XAdd*p576XItems*p2707Y*p366X5.*p456XConnect*p696XItems*p876Xto*p966XAn*p1056XOrder*p2757Y*p366X6.*p456XNotify*p666XOrder*p846XWhen*p996XIt*p1086XHas*p1206XBeen*p1356XPaid*p1506XFor*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X3*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p479Y*p216XFinally,*p486Xsome*p636Xadditional*p966Xmethods*p1206Xare*p1326Xneeded*p1536Xfor*p1656Xconvenience:*p579Y*p366X6.*p456XChange*p666Xexisting*p936Xcustomer*p1206Xinformation*p629Y*p366X7.*p456XChange*p666Xexisting*p936Xitem*p1086Xinformation*p679Y*p366X8.*p456XList*p606XCustomers*p729Y*p366X9.*p456XList*p606XItems*p779Y*p366X10.*p486XList*p636XOrders*p879Y*p366XThe*p486Xnext*p636Xquestion*p906Xto*p996Xask*p1116Xis*p1206Xto*p1296Xwhom*p1446Xdo*p1536Xthese*p1716Xmethods*p1956Xbelong.*p929Y*p216XNone*p369Xof*p462Xthese*p645Xmethods*p888Xdirectly*p1161Xuse*p1284Xthe*p1407Xexisting*p1680Xentities.*p2016XThese*p979Y*p216Xare*p331Xall*p446Xactions*p681Xthat*p826Xchange*p1031Xor*p1116Xuse*p1231Xa*p1286Xdataset.*p1576XTherefore,*p1901Xthese*p2076Xnew*p1029Y*p216Xentities*p531Xneed*p726Xto*p861Xbe*p996Xcreated:*p1311XPersonDataSet,*p1806XItemDataSet,*p1079Y*p216XOrderDataSet*p636Xand*p786XOrderItemDataSet.*p1416XThere*p1626Xis*p1746Xa*p1836Xone-to-many*p1129Y*p216Xrelationship*p603Xbetween*p840Xdatasets*p1107Xand*p1224Xthe*p1341Xdata.*p1545XAlso,*p1722Xbecause*p1959Xsome*p2106Xof*p1179Y*p216Xthese*p410Xdatasets*p693Xuse*p826Xother*p1020Xdatasets*p1303X(for*p1466Xexample:*p1750Xan*p1853Xorder*p2046Xuses*p1229Y*p216Xperson*p445Xto*p554Xget*p692Xaddress*p951Xinformation)*p1360Xthere*p1559Xare*p1697Xsome*p1866Xone-to-one*p1279Y*p216Xrelationships.*p696XThese*p876Xare*p996Xrepresented*p1356Xin*p1446XTUTOR.HPP*p1746Xas*p1836Xfollows:*p1374Y*p216X(10U(sp12h10vsb3T(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.HPP)*p1457Y*p366Xclass*p516XPersonDataSet*p866X:*p916Xpublic*p1091XBT_DataSet*p1499Y*p366X*p391X*p416X*p441X{*p1541Y*p366Xpublic:*p1583Y*p366X*p391X*p416X*p441XBT_Key*p616X*key;*p816X//*p891Xyuch*p1016X-*p1066Xnever*p1216Xmake*p1341Xvariables*p1591Xpublic*p1766X*p1624Y*p516X//*p591Xunless*p766Xdoing*p916Xsimple*p1091Xtutorials*p1666Y*p366X*p391X*p416X*p441XPersonDataSet()*p841X:*p891XBT_DataSet("person.tbt")*p1516X{}*p1708Y*p366X*p391X*p416X*p441X(8U~(10UPersonDataSet()*p866X{}*p1791Y*p366X*p391X*p416X*p441Xint*p541XMenu();*p1833Y*p366X*p391X*p416X*p441Xint*p541XAdd();*p1875Y*p366X*p391X*p416X*p441Xint*p541XModify();*p1917Y*p366X*p391X*p416X*p441Xint*p541XList();*p1958Y*p366X*p391X*p416X*p441X};*p2042Y*p366Xclass*p516XItemDataSet*p816X:*p866Xpublic*p1041XBT_DataSet*p2084Y*p366X*p391X*p416X*p441X{*p2125Y*p366Xpublic:*p2167Y*p366X*p391X*p416X*p441XBT_Key*p616X*key;*p2209Y*p366X*p391X*p416X*p441XItemDataSet()*p791X:*p841XBT_DataSet("item.tbt")*p1416X{}*p2251Y*p366X*p391X*p416X*p441X(8U~(10UItemDataSet()*p816X{}*p2334Y*p366X*p391X*p416X*p441Xint*p541XMenu();*p2376Y*p366X*p391X*p416X*p441Xint*p541XAdd();*p2418Y*p366X*p391X*p416X*p441Xint*p541XModify();*p2459Y*p366X*p391X*p416X*p441Xint*p541XList();*p2501Y*p366X*p391X*p416X*p441X};*p2585Y*p366Xclass*p516XOrderItemDataSet*p941X:*p991Xpublic*p1166XBT_DataSet*p2626Y*p366X*p391X*p416X*p441X{*p2668Y*p366Xpublic:*p2710Y*p366X*p391X*p416X*p441XBT_Key*p616X*key;*p2752Y*p366X*p391X*p416X*p441XItemDataSet*p741XitemDS;*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X4*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p366X(10U(sp12h10vsb3T*p391X*p416X*p441XOrderItemDataSet()*p916X:*p966XBT_DataSet("o_item.tbt")*p1591X{}*p516Y*p366X*p391X*p416X*p441X(8U~(10UOrderItemDataSet()*p941X{}*p599Y*p366X*p391X*p416X*p441Xint*p541XAdd(const*p791Xchar*p916X*orderNumber);*p641Y*p366X*p391X*p416X*p441X};*p724Y*p366Xclass*p516XOrderDataSet*p841X:*p891Xpublic*p1066XBT_DataSet*p766Y*p366X*p391X*p416X*p441X{*p808Y*p366X*p391X*p416X*p441XPersonDataSet*p791XpersonDS;*p850Y*p366X*p391X*p416X*p441XOrderItemDataSet*p866XorderItemDS;*p891Y*p366Xpublic:*p933Y*p366X*p391X*p416X*p441XBT_Key*p616X*key;*p975Y*p366X*p391X*p416X*p441XOrderDataSet()*p816X:*p866XBT_DataSet("order.tbt")*p1466X{}*p1017Y*p366X*p391X*p416X*p441X(8U~(10UOrderDataSet()*p841X{}*p1100Y*p366X*p391X*p416X*p441Xint*p541XMenu();*p1142Y*p366X*p391X*p416X*p441Xint*p541XAdd();*p1184Y*p366X*p391X*p416X*p441Xint*p541XModify();*p1225Y*p366X*p391X*p416X*p441Xint*p541XList();*p1267Y*p366X*p391X*p416X*p441Xint*p541XPrintOne();*p1309Y*p366X*p391X*p416X*p441X};(10U(sp10h12vsb3T*p1406Y*p216XThe*p331Xrest*p475Xof*p560Xthe*p674Xdesign*p879Xis*p963Xlimited*p1198Xto*p1282Xscoping*p1517Xout*p1631Xthe*p1746Ximplementation*p1456Y*p216Xof*p309Xeach*p461Xmethod.*p736XMost*p889Xare*p1011Xtrivial.*p1316XThe*p1439Xmost*p1591Xcomplicated*p1954Xare*p2076Xthe*p1506Y*p216Xmethods*p464Xthat*p623Xdeal*p781Xwith*p939Xmore*p1097Xthan*p1255Xone*p1384Xdataset.*p1700XFor*p1828Xexample*p2076Xthe*p1556Y*p216Xdesign*p426Xon*p516XOrderDataSet::Add()*p1116Xis*p1206Xas*p1296Xfollows:*p1651Y*p366X(10U(sp12h10vsb3TStart*p516XA*p566XTransaction*p1692Y*p366XGet*p466XOrder::Number*p816Xfrom*p941Xuser*p1776Y*p366XLoop*p1818Y*p516XGet*p616XPerson::Name*p941Xfrom*p1066XUser*p1859Y*p516XLookup*p691XPerson*p1901Y*p366XUntil*p516XPerson*p691XFound*p1985Y*p366XSet*p466XOrder::PersonID*p866X=*p916XPerson::ID*p2026Y*p366XGet*p466XOrder::Date*p766Xfrom*p891XUser*p2110Y*p366XLoop*p2152Y*p516XOrderItems::Add()*p2193Y*p366XUntil*p516XUser*p641XIs*p716XDone*p2277Y*p366XAdd*p466XOrder*p2319Y*p366XEnd*p466XTransaction(10U(sp10h12vsb3T*p2416Y*p216XThis*p360Xshould*p565Xbe*p650Xdone*p794Xfor*p909Xeach*p1053Xmethod.*p1312XFortunately,*p1697Xfor*p1811Xthis*p1956Xexample*p2466Y*p216Xthere*p396Xare*p516Xnot*p636Xmany*p786Xmethods*p1026Xto*p1116Xwork*p1266Xwith.*p2616Y*p216X(10U(sp10h12vs3b3TIV.*p336XThe*p456XImplementation(10U(sp10h12vsb3T*p2716Y*p366XThe*p480Xfirst*p654Xoperation*p948Xthat*p1092Xneeds*p1266Xto*p1350Xbe*p1434Xperformed*p1728Xis*p1812Xthe*p1926Xcreation*p2766Y*p216Xof*p311Xthe*p437Xdatasets.*p778XThese*p963Xmethods*p1208Xare*p1334Xnot*p1459Xincluded*p1735Xin*p1830Xthe*p1956Xdataset*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X5*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p479Y*p216Xclasses,*p506Xas*p616Xeach*p786Xdataset*p1046Xclass*p1246Xattempts*p1536Xto*p1646Xopen*p1816Xan*p1926Xexisting*p529Y*p216Xdataset.*p516XTherefore,*p846Xthese*p1026Xmethods*p1266Xare*p1386Xmethods*p1626Xof*p1716Xthe*p1836Xapplication*p579Y*p216X(which*p440Xin*p544Xthis*p707Xtrivial*p961Xexample*p1215Xis*p1318Xnot*p1452Xan*p1556Xobject*p1779Xitself).*p2106XAn*p629Y*p216Xexample*p456Xof*p546Xa*p606Xdataset*p846Xcreation*p1116Xis*p1206Xas*p1296Xfollows.(10U(sp12h10vsb3T*p716Y*p216X(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.CPP)*p799Y*p366Xint*p466XCreatePerson(void)*p841Y*p366X*p391X*p416X*p441X{*p883Y*p366X*p391X*p416X*p441Xint*p541Xstatus*p716X=*p766X0;*p966Y*p366X*p391X*p416X*p441XBT_Def*p616XfileDef(sizeof(Person),*p1216X0);*p1050Y*p366X*p391X*p416X*p441X/////*p591XDefine*p766Xthe*p866XKeys*p991X/////*p1091Y*p366X*p395X*p424X*p453Xi*p482Xf*p611X(*p740X(*p769Xs*p798Xt*p827Xa*p856Xt*p885Xu*p914Xs*p1042X=*p1171Xf*p1200Xi*p1229Xl*p1258Xe*p1287XD*p1316Xe*p1345Xf*p1374X.*p1403XA*p1432Xd*p1461Xd*p1490XF*p1519Xi*p1548Xn*p1577Xa*p1606Xl*p1635XK*p1664Xe*p1693Xy*p1722XS*p1751Xe*p1780Xg*p1809Xm*p1838Xe*p1867Xn*p1896Xt*p1925X(*p1954X1*p1983X,*p2112X4*p2141X,*p1133Y*p1116XBKEY_EXTENDED,*p1175Y*p1116XBTYPE_AUTOINCREMENT))*p1666X==*p1741X0*p1791X&&*p1217Y*p516X*p548X*p580X*p612X(*p644Xs*p676Xt*p708Xa*p740Xt*p772Xu*p804Xs*p930X=*p1056Xf*p1088Xi*p1120Xl*p1152Xe*p1184XD*p1216Xe*p1248Xf*p1280X.*p1312XA*p1344Xd*p1376Xd*p1408XF*p1440Xi*p1472Xn*p1504Xa*p1536Xl*p1568XK*p1600Xe*p1632Xy*p1664XS*p1696Xe*p1728Xg*p1760Xm*p1792Xe*p1824Xn*p1856Xt*p1888X(*p1920X5*p1952X,*p2077X2*p2109X6*p2141X,*p1258Y*p1116XBKEY_EXTENDED+*p1300Y*p1116XBKEY_MODIFIABLE+*p1342Y*p1116XBKEY_ALT_SEQUENCE,*p1384Y*p1116XBTYPE_ZSTRING))*p1516X==*p1591X0*p1641X)*p1425Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X{*p1467Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X//*p591Xset*p691Xalternate*p941Xcollating*p1191Xsequence*p1416Xto*p1491Xthe*p1591Xstandard*p1509Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X//*p591XUPPER.ALT*p1551Y*p366X*p391X*p416X*p441X*p466X*p491X*p516XfileDef.SetUpperAlt();*p1634Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X/////*p666XThis*p791Xactually*p1016Xcreates*p1216Xthe*p1316Xdataset*p1516X/////*p1676Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741XfileDef.CreateBtrieve("person.tbt",*p1641X-1);*p1718Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X}*p1801Y*p366X*p391X*p416X*p441X//*p516Xignore*p691Xfile*p816Xexists*p991Xerror*p1843Y*p366X*p391X*p416X*p441Xif*p516X(status*p716X==*p791XBSTAT_EXISTS)*p1141Xstatus*p1316X=*p1366X0;*p1926Y*p366X*p391X*p416X*p441Xreturn(status);*p1968Y*p366X*p391X*p416X*p441X}*p2057Y*p216X(10U(sp10h12vsb3TRepeat*p426Xthis*p576Xfor*p696Xeach*p846Xof*p936Xthe*p1056Xdatasets.*p2107Y*p366XPersonDataSet*p786Xis*p876Xthe*p996Xsimplest*p1266Xclass*p1446Xto*p1536Ximplement.*p1896XThe*p2016XAdd()*p2157Y*p216Xand*p349XModify()*p632Xmethods*p886Xvery*p1049Xsimilar.*p1376XAdd()*p1569Xis*p1672Xpartially*p1986Xlisted*p2207Y*p216Xbelow:*p2302Y*p216X(10U(sp12h10vsb3T(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.CPP)*p2385Y*p366Xint*p466XPersonDataSet::Add()*p2427Y*p366X*p391X*p416X*p441X{*p2469Y*p366X*p391X*p416X*p441XPerson*p616Xrecord;*p2510Y*p366X*p391X*p416X*p441Xint*p541Xstatus=0;*p2552Y*p366X*p391X*p416X*p441Xchar*p566Xc;*p2636Y*p366X*p391X*p416X*p441X//*p516Xfill*p641Xin*p716Xthe*p816Xrecord*p2719Y*p366X*p391X*p416X*p441Xprintf("\nPerson*p866XName*p991X(Last*p1141XName,*p1291XFirstName)*p1566X->*p1641X");*p2761Y*p366X*p391X*p416X*p441Xcin.getline(record.name,*p1066Xsizeof(record.name));*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X6*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p366X(10U(sp12h10vsb3T*p391X*p416X*p441X*p466X*p491X*p516X.*p516Y*p366X*p391X*p516X*p541X.*p557Y*p516X*p541X.*p591X{Get*p716XRest*p841XOf*p916XInfo}*p599Y*p516X*p541X.*p683Y*p366X*p391X*p416X*p441X//*p516Xget*p616Xa*p666Xkey*p766Xand*p866Xadd*p966Xthe*p1066Xrecord*p1241Xbased*p1391Xon*p1466Xthe*p1566Xkey*p724Y*p366X*p391X*p416X*p441X//*p516Xa*p566Xkey*p666Xis*p741Xnecessary*p991Xas*p1066XBtrieve*p1266Xrequires*p1491Xa*p1541Xkey*p1641Xpath*p1766Xfor*p766Y*p366X*p391X*p416X*p441X//*p516Xan*p591XInsert*p808Y*p366X*p391X*p416X*p441Xkey*p541X=*p591XGetKey(0);*p891Y*p366X*p391X*p416X*p441X//*p516XMake*p641Xsure*p766Xthe*p866Xkey*p966Xexists*p933Y*p366X*p391X*p416X*p441Xif*p516X(key)*p975Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541X//*p616Xinsert*p791Xthe*p891Xrecord*p1017Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741Xkey->Insert(&record);*p1058Y*p366X*p391X*p416X*p441Xelse*p1100Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741XStatus();*p1184Y*p366X*p391X*p416X*p441Xreturn*p616Xstatus;*p1225Y*p366X*p391X*p416X*p441X}(10U(sp10h12vsb3T*p1364Y*p216XListing*p456Xthe*p576XPersonDataSet*p996Xis*p1086Xalmost*p1296Xas*p1386Xeasy:*p1459Y*p216X(10U(sp12h10vsb3T(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.CPP)*p1542Y*p366Xint*p466XPersonDataSet::List()*p1584Y*p366X*p391X*p416X*p441X{*p1626Y*p366X*p391X*p416X*p441X//*p516Xlist*p641Xin*p716Xname*p841Xorder*p1668Y*p366X*p391X*p416X*p441Xint*p541Xstatus*p716X=*p766XStatus();*p1709Y*p366X*p391X*p416X*p441XPerson*p616Xrecord;*p1793Y*p366X*p391X*p416X*p441X//*p516Xget*p616Xthe*p716XoldRecord*p966Xby*p1041Xthe*p1141XNAME*p1266XKEY*p1835Y*p366X*p391X*p416X*p441Xkey*p541X=*p591XGetKey(1);*p1918Y*p366X*p391X*p416X*p441X//*p516XMake*p641Xsure*p766Xthe*p866Xkey*p966Xexists*p1960Y*p366X*p391X*p416X*p441Xif*p516X(key)*p2002Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X{*p2043Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741Xkey->GetFirst(&record);*p2127Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xint*p616Xcount*p766X=*p816X0;*p2169Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xwhile*p666X(!status)*p2210Y*p516X*p541X*p566X*p591X{*p2252Y*p516X*p541X*p566X*p591X//*p666Xpage*p791Xbreak*p941Xevery*p1091X20*p1166Xlines*p1316X(just*p1466Xfor*p1566Xfun)*p2294Y*p516X*p541X*p566X*p591Xif*p666X(!count*p866X(0Nª(10U(0Nª(10U*p941Xcount*p1091X>*p1141X20)*p2336Y*p516X*p541X*p566X*p591X*p616X{*p2377Y*p516X*p541X*p566X*p591X*p616Xif*p691X(count)*p966X//*p1041Xdont*p1166Xbreak*p1316Xon*p1391Xthe*p1491Xfirst*p1641Xscreen*p2419Y*p516X*p541X*p566X*p591X*p616X*p641X{*p2461Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541X*p566X*p591X*p616Xcout*p741X<<*p816X"Pause*p991X---*p1091XHit*p1191Xany*p1291Xkey*p1391Xfor*p1491Xnext*p1616Xscreen\n";*p2503Y*p516X*p541X*p566X*p591X*p616X*p641Xgetch();*p2544Y*p516X*p541X*p566X*p591X*p616X*p641X}*p2628Y*p516X*p541X*p566X*p591X*p616Xcout*p741X<<*p816X"\n\nPerson*p1116XFile*p1241XListing\n";*p2670Y*p516X*p541X*p566X*p591X*p616Xcout*p741X<<*p816X"-------------------\n\n";*p2711Y*p516X*p541X*p566X*p591X*p616Xcount*p766X=*p816X0;*p2753Y*p516X*p541X*p566X*p591X*p616X}*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X7*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p516X(10U(sp12h10vsb3T*p541X*p566X*p591Xcout*p716X<<*p791Xrecord.name*p1091X<<*p1166X(8U'(10U\n(8U'(10U;*p516Y*p516X*p541X*p566X*p591Xcout*p716X<<*p791Xrecord.shipAddress.street*p1441X<<*p1516X(8U'(10U\n(8U'(10U;*p557Y*p516X*p541X*p566X*p591Xcout*p716X<<*p791Xrecord.shipAddress.city*p1391X<<*p1466X",*p1541X"*p1591X<<*p599Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691X*p716Xrecord.shipAddress.state*p1341X<<*p1416X"*p1491X"*p1541X<<*p641Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691X*p716Xrecord.shipAddress.zip*p1291X<<*p1366X"\n\n";*p683Y*p516X*p541X*p566X*p591Xcount*p741X+=*p816X5;*p766Y*p516X*p541X*p566X*p591X//*p666Xget*p766Xthe*p866Xnext*p991Xrecord*p1166Xfor*p1266Xthat*p1391Xkey*p808Y*p516X*p541X*p566X*p591Xstatus*p766X=*p816Xkey->GetNext(&record);*p850Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541X*p566X}*p933Y*p516X*p541X//*p616Xdont*p741Xreturn*p916Xan*p991Xerror*p1141Xat*p1216Xthe*p1316Xend*p1416Xof*p1491Xthe*p1591Xfile*p975Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xif*p591X(status*p791X==*p866XBSTAT_EOF)*p1141Xstatus*p1316X=*p1366X0;*p1017Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X}*p1058Y*p366X*p391X*p416X*p441Xelse*p1100Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741XStatus();*p1184Y*p366X*p391X*p416X*p441Xreturn*p616Xstatus;*p1225Y*p366X*p391X*p416X*p441X}(10U(sp10h12vsb3T*p1364Y*p216XA*p276Xmore*p426Xcomplicated*p786Xmethod,*p1026Xsuch*p1176Xas*p1266XOrder::Add(),*p1686Xcould*p1866Xbe*p1956Xdone*p2106Xas*p1414Y*p216Xfollows:*p1509Y*p216X(10U(sp12h10vsb3T(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.CPP)*p1592Y*p366Xint*p466XOrderDataSet::Add()*p1634Y*p366X*p391X*p416X*p441X{*p1676Y*p366X*p391X*p416X*p441XOrder*p591Xrecord;*p1718Y*p366X*p391X*p416X*p441Xint*p541Xstatus=0;*p1759Y*p366X*p391X*p416X*p441Xchar*p566Xc;*p1885Y*p366X*p391X*p416X//Because*p666Xwe*p741Xwill*p866Xupdate*p1041Xmultiple*p1266Xdatasets,*p1516Xthis*p1641Xis*p1716Xa*p1766Xgood*p1926Y*p366X*p391X*p416X//*p491Xopportunity*p791Xto*p866Xuse*p966Xa*p1016Xtransaction.*p1366XNOTE*p1491X-*p1541XNever*p1691Xuse*p1791Xa*p1968Y*p366X*p391X*p416X//*p491Xtransaction*p791Xin*p866Xthis*p991Xmanner*p1166X(as*p1266Xfiles*p1416Xare*p1516Xlocked*p1691Xwhile*p2010Y*p366X*p391X*p416X//*p491Xwaiting*p691Xon*p766Xthe*p866Xuser*p991Xinput)*p1166Xin*p1241Xa*p1291Xnetwork*p1491Xenvironment*p2052Y*p366X*p391X*p416X//*p491Xunless*p666Xone*p766Xdesire*p941Xto*p1016Xstop*p1141Xup*p1216Xthe*p1316Xsystem*p1491X(or*p1591Xunless*p1766Xone*p1966X*p2093Y*p366X*p391X*p416X//*p491Xis*p566Xwriting*p766Xa*p816Xsimple*p991Xtutorial).*p1291XInstead,*p1516Xbuffer*p2135Y*p366X*p391X*p416X//*p491Xinformation*p791Xand*p891Xuse*p991Xthe*p1091Xtransaction*p1391Xonly*p1516Xwhen*p1641Xaccessing*p1991X*p2177Y*p366X*p391X*p416X//*p491Xthe*p591Xfiles*p2260Y*p366X*p391X*p416X*p441XBT_Transaction*p816Xtransaction;*p2344Y*p366X*p391X*p416X*p441Xif*p516X(transaction.Status())*p2386Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xreturn*p691Xstatus;*p966X//*p1041Xproblem*p1241X-*p1291Xget*p1391Xout*p1491Ximmediately*p2511Y*p366X*p391X*p416X*p441X//*p516Xfill*p641Xin*p716Xthe*p816Xrecord*p2553Y*p366X*p391X*p416X*p441Xprintf("\nOrder*p841XNumber*p1016X->*p1091X");*p2594Y*p366X*p391X*p416X*p441Xcin.getline(record.number,*p1116Xsizeof(record.number));*p2678Y*p366X*p391X*p416X*p441X//*p516Xget*p616Xthe*p716Xperson*p2720Y*p366X*p391X*p416X*p441XPerson*p616Xperson;*p2761Y*p366X*p391X*p416X*p441Xdo*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X8*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p366X(10U(sp12h10vsb3T*p391X*p416X*p441X*p466X*p491X*p516X{*p516Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xprintf("\nPerson(8U'(10Us*p991XName*p1116X(Last*p1266XName,*p1416XFirst)*p1591X->*p1666X");*p557Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xcin.getline(person.name,*p1141Xsizeof(person.name));*p641Y*p516X*p541X//*p616Xcheck*p766Xif*p841Xuser*p966Xjust*p1091Xhit*p1191Xenter*p1341Xto*p1416Xescape*p1591X(and*p1716Xquit)*p683Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xif*p591X(strlen(person.name))*p724Y*p516X*p541X*p566X{*p766Y*p516X*p541X*p566X//*p641Xcheck*p791Xto*p866Xsee*p966Xif*p1041Xname*p1166Xis*p1241Xlegit*p850Y*p516X*p541X*p566X//*p641Xget*p741Xa*p791Xkey*p891Xby*p966Xperson*p1141Xname*p891Y*p516X*p541X*p566XpersonDS.key*p891X=*p941XpersonDS.GetKey(1);*p975Y*p516X*p541X*p566X//*p641Xlook*p766Xup*p841Xthe*p941Xuser*p1066Xentered*p1266Xname*p1391Xin*p1466Xperson*p1641Xdataset*p1017Y*p516X*p541X*p566Xstatus*p741X=*p791XpersonDS.key->GetEqual(person.name,*p1058Y*p366X*p391X*p1416X*p1441X*p1466X*p1491X*p1516X&person);*p1100Y*p516X*p541X*p566Xif*p641X(status)*p1142Y*p516X*p541X*p566X*p591X*p616X{*p1184Y*p516X*p541X*p566X*p591X*p616X//*p691Xno*p766Xperson*p941Xfound*p1225Y*p516X*p541X*p566X*p591X*p616Xif*p691X(status*p891X==*p966XBSTAT_NOTFOUND)*p1267Y*p516X*p541X*p566X*p591X*p616X*p641X*p666Xprintf("Person:*p1066X%s*p1141Xwas*p1241Xnot*p1341Xfound-please*p1666Xreenter",*p1309Y*p816Xperson.name);*p1351Y*p516X*p541X*p566X*p591X*p616Xelse*p1392Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691X//*p766Xserious*p966Xerror*p1434Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691Xbreak;*p1476Y*p516X*p541X*p566X*p591X*p616X}*p1518Y*p516X*p541X*p566X}*p1559Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xelse*p1601Y*p516X*p541X*p566Xperson.id*p816X=*p866X0;*p966X//*p1041Xuser*p1166Xwants*p1316Xto*p1391Xquit*p1643Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X}*p566Xwhile*p716X(status);*p1726Y*p366X*p391X*p416X*p441X//*p516XMake*p641Xsure*p766Xwe*p841Xfound*p991Xa*p1041Xvalid*p1191Xperson*p1768Y*p366X*p391X*p416X*p441Xif*p516X(!status*p741X&&*p816Xperson.id)*p1810Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X{*p1852Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xrecord.personID*p916X=*p966Xperson.id;*p1935Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X//*p591Xenter*p741Xrest*p866Xof*p941Xheader*p1116Xdata*p1977Y*p666X.*p2019Y*p666X.*p2060Y*p666X.*p2102Y*p666X.*p2144Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p2186Y*p366X*p391X*p416X*p441X*p466X*p491X//*p566Xget*p666Xall*p766Xorder*p916Xitems*p1066Xfor*p1166Xthe*p1266Xorder*p2227Y*p366X*p391X*p416X*p441X*p466X*p491Xdo*p2269Y*p516X*p541X{*p2311Y*p516X*p541Xstatus*p716X=*p766XorderItemDS.Add(record.number);*p2353Y*p516X*p541X}*p591Xwhile*p741X(!status);*p1116X//*p1191XBSTAT_EOF*p1441Xis*p1516Xreturned*p1741Xwhen*p2394Y*p366X*p391X*p966X*p991X*p1016X*p1041X*p1066X*p1091X//*p1166Xnothing*p1366Xentered*p2520Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X//*p591Xcheck*p741Xif*p816Xuser*p941Xwas*p1041Xjust*p1166Xrequesting*p1441Xto*p1516Xquit*p2561Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xif*p591X(status*p791X==*p866XBSTAT_EOF)*p1141Xstatus*p1316X=*p1366X0;*p2645Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xif*p591X(!status)*p2687Y*p516X*p541X*p566X{*p2728Y*p516X*p541X*p566X//*p641Xget*p741Xa*p791Xkey*p891Xand*p991Xadd*p1091Xthe*p1191Xrecord*p1366Xbased*p1516Xon*p1591Xthe*p1691Xkey*p2770Y*p516X*p541X*p566Xkey*p666X=*p716XGetKey(0);*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1101X(10U(sp10h12vs3b3TPage*p1251X9*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p516X(10U(sp12h10vsb3T*p541X*p566Xif*p641X(key)*p516Y*p516X*p541X*p566X*p591X*p616Xstatus*p791X=*p841Xkey->Insert(&record);*p599Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541Xelse*p641Y*p516X*p541X*p566X*p591X*p616Xstatus*p791X=*p841XStatus();*p683Y*p516X*p541X*p566X}*p766Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X}*p850Y*p366X*p391X*p416X*p441X//*p516Xif*p591Xeverything*p866Xis*p941Xgood*p1066X-*p1116Xcommit*p1291Xto*p1366Xdisk*p891Y*p366X*p391X*p416X*p441Xif*p516X(!status)*p933Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741Xtransaction.Commit();*p1017Y*p366X*p391X*p416X*p441Xreturn*p616Xstatus;*p1058Y*p366X*p391X*p416X*p441X}(10U(sp10h12vsb3T*p1197Y*p216XPrinting*p480Xan*p563Xinvoice*p796Xis*p880Xmore*p1023Xcomplicated*p1376Xbecause*p1610Xit*p1693Xinvolves*p1956Xdealing*p1247Y*p216Xdirectly*p480Xwith*p624Xmore*p768Xrelationships.*p1236XIt*p1320Xis*p1404Xnot,*p1548Xhowever,*p1812Xdifficult*p2106Xto*p1297Y*p216Ximplement:*p1392Y*p216X(10U(sp12h10vsb3T(Partial*p441Xlisting*p641Xfrom*p766XTUTOR.CPP)*p1475Y*p366Xint*p466XOrderDataSet::PrintOne()*p1517Y*p366X*p391X*p416X*p441X{*p1559Y*p366X*p391X*p416X*p441XOrder*p591Xrecord;*p1601Y*p366X*p391X*p416X*p441Xint*p541Xstatus=0;*p1642Y*p366X*p391X*p416X*p441Xchar*p566Xc;*p1726Y*p366X*p391X*p416X*p441X//*p516Xget*p616Xthe*p716Xorder*p866Xnumber*p1041Xto*p1116Xinvoice*p1768Y*p366X*p391X*p416X*p441Xprintf("\n\nOrder*p891XNumber*p1066X->*p1141X");*p1809Y*p366X*p391X*p416X*p441Xcin.getline(record.number,*p1116Xsizeof(record.number));*p1893Y*p366X*p391X*p416X*p441X//*p516Xget*p616Xthe*p716Xorder*p866Xnumber*p1041Xkey*p1935Y*p366X*p391X*p416X*p441Xkey*p541X=*p591XGetKey(0);*p2018Y*p366X*p391X*p416X*p441Xif*p516X(key)*p2060Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X{*p2102Y*p516X*p541X//*p616Xget*p716Xthe*p816Xorder*p966Xfor*p1066Xthe*p1166Xinvoice*p2143Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741Xkey->GetEqual(record.number,*p1466X&record);*p2227Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xif*p591X(!status)*p2269Y*p516X*p541X*p566X*p591X{*p2310Y*p516X*p541X*p566X*p591X//*p666Xprint*p816Xorder*p966Xnumber*p1141Xand*p1241Xdate*p1366Xof*p1441Xorder*p2352Y*p666X.*p2394Y*p666X.*p2436Y*p666X.*p2477Y*p516X*p541X*p566X*p591X//*p666Xget*p766Xperson*p941Xand*p1041Xaddress*p2519Y*p666X.*p2561Y*p666X.*p2603Y*p516X*p541X*p566X*p591XpersonDS.key*p916X=*p966XpersonDS.GetKey(0);*p2644Y*p516X*p541X*p566X*p591XPerson*p766Xperson;*p2686Y*p516X*p541X*p566X*p591Xif*p666X(!personDS.key->GetEqual(&record.personID,*p2728Y*p366X*p391X*p1266X*p1291X*p1316X*p1341X*p1366X&person))*p2770Y*p516X*p541X*p566X*p591X*p616X{*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1086X(10U(sp10h12vs3b3TPage*p1236X10*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p516X(10U(sp12h10vsb3T*p541X*p566X*p591X*p616X*p666X.*p516Y*p666X.*p716X{*p766Xprint*p916Xperson*p1091Xinfo*p1216X}*p557Y*p666X.*p599Y*p366X*p391X*p416X*p441X*p466X*p491X*p516X*p541X*p566X*p591X}*p683Y*p516X*p541X*p566X*p591X//*p666Xprint*p816Xheader*p991Xline*p1116Xfor*p1216Xitems*p1366Xin*p1441Xorder*p724Y*p516X*p541X*p566X*p591X*p616X.*p766Y*p516X*p541X*p566X*p591X*p616X.*p808Y*p516X*p541X*p566X*p591X*p616X.*p891Y*p516X*p541X*p566X*p591X//*p666Xloop*p791Xfor*p891Xeach*p1016Xitem*p933Y*p516X*p541X*p566X*p591XOrderItem*p841XorderItem;*p975Y*p516X*p541X*p566X*p591XItem*p716Xitem;*p1058Y*p516X*p541X*p566X*p591XorderItemDS.key*p991X=*p1041XorderItemDS.GetKey(0);*p1100Y*p516X*p541X*p566X*p591Xstatus*p766X=*p816XorderItemDS.key->GetGreaterEqual(*p1142Y*p1116X*p1141Xrecord.number,*p1516X&orderItem);*p1184Y*p516X*p541X*p566X*p591Xif*p666X(*p716X!status*p916X&&*p991X!(strcmp(orderItem.orderNumber,*p1225Y*p366X*p391X*p666X*p691X*p1116X*p1141X*p1166X*p1191X*p1216X*p1241X*p1266X*p1291X*p1316Xrecord.number))*p1716X)*p1267Y*p516X*p541X*p566X*p591X*p616X{*p1309Y*p516X*p541X*p566X*p591X*p616Xdo*p1351Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691X{*p1392Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691X//*p766Xget*p866Xdescription*p1434Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691XorderItemDS.itemDS.key=*p1476Y*p816X*p841XorderItemDS.itemDS.GetKey(0);*p1518Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691Xif*p766X(orderItemDS.itemDS.key->GetEqual(*p1559Y*p966X&orderItem.itemNumber,*p1541X&item))*p1601Y*p666X*p691X*p716X*p741X*p766X*p791Xstrcpy(item.description,*p1416X"UNKNOWN");*p1643Y*p666X.*p1685Y*p666X.*p716X{*p766Xprint*p916Xorder*p1066Xitem*p1191Xinfo*p1316X}*p1726Y*p666X.*p1768Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691Xstatus*p866X=*p916XorderItemDS.key->GetNext(&orderItem);*p1810Y*p516X*p541X*p566X*p591X*p616X*p641X*p666X*p691X}*p741Xwhile*p891X(!status*p1116X&&*p1852Y*p366X*p391X*p966X*p991X!(strcmp(orderItem.orderNumber,*p1893Y*p366X*p391X*p966X*p991X*p1016X*p1041X*p1066X*p1091X*p1116X*p1141X*p1166X*p1191X*p1216Xrecord.number)));*p1935Y*p666X.*p1977Y*p666X.*p716X{*p766Xprint*p916Xtotal*p1066Xinfo*p1191X}*p2019Y*p666X.*p2102Y*p516X*p541X*p566X*p591X*p616X*p641X}*p2144Y*p516X*p541X*p566X*p591Xelse*p2186Y*p516X*p541X*p566X*p591X*p616X*p641X{*p2227Y*p516X*p541X*p566X*p591X*p616X*p641Xprintf("*p1416XNO*p1491XITEMS*p1641XFOUND\n");*p2269Y*p516X*p541X*p566X*p591X*p616X*p641X}*p2353Y*p516X*p541X*p566X*p591Xif*p666X(status*p866X==*p941XBSTAT_EOF)*p1216Xstatus*p1391X=*p1441X0;*p2394Y*p516X*p541X*p566X*p591X}*p2436Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xelse*p2478Y*p516X*p541X*p566X*p591X{*p2520Y*p516X*p541X*p566X*p591Xif*p666X(status*p866X==*p941XBSTAT_NOTFOUND)*p2561Y*p516X*p541X*p566X*p591X*p616X{*p2603Y*p516X*p541X*p566X*p591X*p616Xprintf("Order:*p991X%s*p1066Xwas*p1166Xnot*p1266Xfound",*p1466Xrecord.number);*p2645Y*p516X*p541X*p566X*p591X*p616Xstatus*p791X=*p841X0;*p2687Y*p516X*p541X*p566X*p591X*p616X}*p2728Y*p516X*p541X*p566X*p591Xelse*p2770Y*p516X*p541X*p566X*p591X*p616Xprintf("Error*p1016X%d*p1141Xoccurred*p1416Xwhile*p1616Xsearching*p1916Xfor*p2066X%s",*p2879Y*p216X(10U(sp10h12vsb3T*p2929Y*p1086X(10U(sp10h12vs3b3TPage*p1236X11*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T&l0o0E&a0P*p329Y*p651X(10U(sp10h12vs3b3T--*p741XBtrieve*p981XClass*p1161XLibrary*p1401XTutorial*p1671X--(10U(sp10h12vsb3T*p474Y*p816X(10U(sp12h10vsb3T*p841Xstatus,*p1041Xrecord.number);*p516Y*p516X*p541X*p566X*p591X}*p557Y*p366X*p391X*p416X*p441X*p466X*p491X}*p599Y*p366X*p391X*p416X*p441Xelse*p641Y*p366X*p391X*p416X*p441X*p466X*p491X*p516Xstatus*p691X=*p741XStatus();*p724Y*p366X*p391X*p416X*p441Xreturn*p616Xstatus;*p766Y*p366X*p391X*p416X*p441X}(10U(sp10h12vsb3T*p913Y*p366XThe*p493Xfull*p649Xlistings*p926Xcan*p1053Xbe*p1149Xfound*p1336Xin*p1433XTUTOR.HPP*p1739Xand*p1866XTUTOR.CPP.*p963Y*p216XMost*p366Xof*p456Xthe*p576Xcommon*p786Xfeatures*p1056Xof*p1146Xthe*p1266XBtrieve*p1506XClass*p1686XLibrary*p1926Xare*p2046Xused*p1013Y*p216Xin*p306Xthat*p456Xsample*p666Xprogram.*p2929Y*p1086X(10U(sp10h12vs3b3TPage*p1236X12*p2979Y*p276XCopywrite*p576X1992*p726Xby*p816XObject*p1026XResource*p1296XGroup.*p1536XAll*p1656XRights*p1866XReserved(10U(sp10h12vsb3T*rB&l1l1h0o0E(8U(sp10h12vsb3T&d@E